///*******************************************************************************
// * ===========================================================
// * Ankush : Big Data Cluster Management Solution
// * ===========================================================
// * 
// * (C) Copyright 2014, by Impetus Technologies
// * 
// * This is free software; you can redistribute it and/or modify it under
// * the terms of the GNU Lesser General Public License (LGPL v3) as
// * published by the Free Software Foundation;
// * 
// * This software is distributed in the hope that it will be useful, but
// * WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// * See the GNU Lesser General Public License for more details.
// * 
// * You should have received a copy of the GNU Lesser General Public License 
// * along with this software; if not, write to the Free Software Foundation, 
// * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
// ******************************************************************************/
///**
// * 
// */
//package com.impetus.ankush2.framework.manager;
//
//import net.neoremind.sshxcute.core.SSHExec;
//import net.neoremind.sshxcute.task.CustomTask;
//import net.neoremind.sshxcute.task.impl.ExecCommand;
//
//import com.impetus.ankush.AppStoreWrapper;
//import com.impetus.ankush.common.config.ConfigurationReader;
//import com.impetus.ankush.common.constant.Constant;
//import com.impetus.ankush.common.framework.ServiceMonitorable;
//import com.impetus.ankush.common.framework.config.ClusterConf;
//import com.impetus.ankush.common.utils.AnkushLogger;
//import com.impetus.ankush.common.utils.CommonUtil;
//import com.impetus.ankush.common.utils.SSHUtils;
//
///**
// * @author root
// * 
// */
//public class GenericServiceMonitor implements ServiceMonitorable {
//
//	/** The logger. */
//	private AnkushLogger logger = new AnkushLogger(GenericServiceMonitor.class);
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see
//	 * com.impetus.ankush.common.framework.ServiceMonitorable#manageService(
//	 * com.impetus.ankush.common.framework.config.ClusterConf,
//	 * net.neoremind.sshxcute.core.SSHExec, java.lang.String, java.lang.String)
//	 */
//	@Override
//	public boolean manageService(ClusterConf conf, SSHExec connection,
//			String processName, String action) {
//
//		boolean result = true;
//		try {
//
//			if (action.equals(Constant.ServiceAction.START)) {
//				if (processName.equals(Constant.RoleProcessName
//						.getProcessName(Constant.Role.AGENT))) {
//					result = this.startagent(connection, conf);
//				} else if (processName.equals(Constant.RoleProcessName
//						.getProcessName(Constant.Role.GMETAD))) {
//					result = this.startgmetad(connection, conf);
//				} else if (processName.equals(Constant.RoleProcessName
//						.getProcessName(Constant.Role.GMOND))) {
//					result = this.startgmond(connection, conf);
//				}
//			} else {
//				if (processName.equals(Constant.RoleProcessName
//						.getProcessName(Constant.Role.AGENT))) {
//					result = this.stopagent(connection, conf);
//				} else if (processName.equals(Constant.RoleProcessName
//						.getProcessName(Constant.Role.GMETAD))) {
//					result = this.stopgmetad(connection, conf);
//				} else if (processName.equals(Constant.RoleProcessName
//						.getProcessName(Constant.Role.GMOND))) {
//					result = this.stopgmond(connection, conf);
//				}
//			}
//		} catch (Exception e) {
//			logger.error(e.getMessage());
//			return false;
//		}
//		return result;
//	}
//
//	public boolean startagent(SSHExec connection, ClusterConf conf) {
//		String startAgent = "sh " + Constant.Agent.AGENT_START_SCRIPT;
//		CustomTask task = new ExecCommand(startAgent);
//		startAgent = task.getCommand();
//		return SSHUtils.action(connection, startAgent);
//	}
//
//	public boolean stopagent(SSHExec connection, ClusterConf conf) {
//		String stopAgent = "sh " + Constant.Agent.AGENT_STOP_SCRIPT;
//		CustomTask task = new ExecCommand(stopAgent);
//		stopAgent = task.getCommand();
//		return SSHUtils.action(connection, stopAgent);
//	}
//
//	public boolean stopgmetad(SSHExec connection, ClusterConf conf) {
//		String stopGmetadCmd = "killall -9 gmetad";
//		return SSHUtils.action(connection, stopGmetadCmd);
//	}
//
//	public boolean stopgmond(SSHExec connection, ClusterConf conf) {
//		String stopGmondCmd = "killall -9 gmond";
//		return SSHUtils.action(connection, stopGmondCmd);
//	}
//
//	public boolean startgmetad(SSHExec connection, ClusterConf conf) {
//		// getting config reader object.
//		ConfigurationReader ankushConf = AppStoreWrapper.getAnkushConfReader();
//
//		// Getting gmetad configuration path.
//		String gmetadConfPath = CommonUtil.getUserHome(conf.getUsername())
//				+ ankushConf.getStringValue("gmetad.conf");
//		// start gmetad command.
//		String startGmetadCmd = "gmetad --conf=" + gmetadConfPath;
//		return SSHUtils.action(connection, startGmetadCmd);
//	}
//
//	public boolean startgmond(SSHExec connection, ClusterConf conf) {
//		// getting config reader object.
//		ConfigurationReader ankushConf = AppStoreWrapper.getAnkushConfReader();
//
//		// Getting gmond configuration path.
//		String gmondConfPath = CommonUtil.getUserHome(conf.getUsername())
//				+ ankushConf.getStringValue("gmond.conf");
//		// start gmond command
//		String startGmondCmd = "gmond --conf=" + gmondConfPath;
//		return SSHUtils.action(connection, startGmondCmd);
//	}
//
//}
